An important aspect of many electronic devices is the ability to communicate with other electronic devices for the purpose of constructing systems that perform useful tasks for users. For example, in many computer applications, the central processing unit (CPU) of a computer may need to communicate with a user input device such as a keyboard and/or a mouse; a display device such as a video display or computer monitor, an external storage device such as a floppy disk drive, a hard disk drive, a tape drive and/or an optical disk drive (e.g., a compact disk (CD) drive or a digital versatile disk (DVD) drive); or other peripheral devices such as a printer, a scanner, a camera, a modem, and/or an external network connection, among others.
In addition, other types of electronic devices typically need to communicate with one another. For example, in many multimedia applications such as home entertainment systems, various electronic devices such as audio receivers, audio amplifiers, televisions, video cassette recorders, CD players, DVD players, and set top boxes, among others, may communicate with one another to display audio and/or video information to a user.
Traditionally, most electronic devices in the aforementioned applications have been coupled together using dedicated point-to-point digital or analog interfaces that form individual input/output (I/O) channels between pairs of devices. However, each point-to-point interface typically requires a dedicated connection, and as a result, a great deal of circuitry and cabling may be required to interface a number of devices together. For example, a typical personal computer (PC) may include separate connectors and cables for interfacing with a keyboard, a mouse, a computer monitor, audio speakers, a disk drive, a CD drive, a printer, and a modem, among others. The connectors and cables often differ from one another and are not interchangeable. Morever, each interface also typically communicates via a unique language, known as a "protocol", that is not compatible with the protocols of other interfaces.
Even beyond the drawback of producing a tangled mess of cables in the rear of a computer, the use of multiple widely disparate interfaces also induces performance and compatibility problems, e.g., due to the lack of scalability, upgradability and/or commonality of many such interfaces. In particular, a significant number of interfaces are limited in performance by the necessity to support legacy components. Therefore, even though a computer may include faster and more powerful internal components, the computer's ability to perform with peak efficiency may be limited by older and slower interfaces through which it must communicate to perform its tasks. This problem has recently grown in significance as video applications have become more popular due to the huge bandwidth requirements of video information.
To address these concerns, significant efforts have been expended in developing high performance standardized interfaces that permit multiple electronic devices to share the same interface. One such interface is based on the Institute of Electrical and Electronics Engineers (IEEE) specification IEEE 1394 (also referred to as FireWire.RTM.). The IEEE 1394 specification defines a standard serial bus interface that, among other advantages, provides scalable, fast and reliable communication between pairs of devices coupled over such an interface. An IEEE 1394 interface permits electronic devices to be daisy chained together using common connectors, and also supports "hot pluggability", where devices may be attached or removed from the interface dynamically while other devices coupled to the interface continue to operate. One such use of hot pluggability, for example, is in a hot swappable device bay defined by the Device Bay specification, which permits different computer components, such as hard disk drives, floppy disk drives, CD drives, DVD drives, etc., to be installed into and/or removed from a common bay on a desktop computer without requiring that the computer be powered down.
An IEEE 1394 interface is defined by multiple overlapping protocol layers that define the communication protocols used by the interface. At the base layer, known as the physical (PHY) layer, electrical signals transferred across the physical wires in the interface are converted to logical "1" and "0" values. These logical values are converted into strings of logical values known as packets in a "link" layer that interfaces with the PHY layer. The packets are then passed either to a "transaction" layer that assembles the packets into transactions, or to a software driver that directly operates on the packets. Information to be transmitted is passed in a reverse manner, from the software driver, optionally to the transaction layer, to the link layer, to the PHY layer, and then out across the physical wires forming the interface.
An IEEE 1394 interface is one example of a "memory-mapped" serial communications interface, where the interface defines a unified memory space that is distributed between the various devices coupled to the interface (with each device including one or more "nodes" on the interface). Thus, a node can typically initiate a communication with another node by specifying a memory address allocated to that other node in the unified memory space. Another important aspect of an IEEE 1394 interface is that "peer-to-peer" communications are supported, meaning that any two nodes can communicate directly with one another, without having to pass communications through a single master device.
Peer-to-peer communications are particularly useful in bandwidth-intensive operations such as video communications. Thus, for example, if a computer CPU is coupled to a video display and a DVD drive through an IEEE 1394 interface, the DVD drive could transmit video information directly to the video display over the interface, thereby eliminating the need for the CPU to process and oversee the transmission.
While the IEEE 1394 specification defines an extremely efficient, scalable, flexible, reliable and fast interface, one problem associated with the specification, as well as with other such memory-mapped communications interfaces, is that there is no provision for secured communications between devices coupled to such interfaces. Each data transmission is broadcast to every node on the interface. Only a node that is indicated as the destination for a data transmission handles the transmission--all other nodes ignore the data transmission. Moreover, data is transmitted without any encryption--a process often used in other environments to scramble transmitted information and thereby prevent unauthorized entities from comprehending any intercepted information. Consequently, it is feasible in theory for an unauthorized device to be coupled to an IEEE 1394 interface and intercept practically any information transmitted to other nodes on the interface.
Another risk inherent with many memory-mapped communications interfaces is that there is no reliable manner of ensuring the identity of any particular node. Thus, it would also be feasible in theory for an unauthorized device to mimic another device to obtain private, and possibly sensitive, information internal to other devices coupled to the interface.
It is anticipated that IEEE 1394-based interfaces will eventually be used in a wide variety of applications. However, the utility of such interfaces is significantly limited by virtue of the lack of security support. One limitation is the inability to support copy protection, as it would be possible, for example, for an unauthorized device to intercept and record the transmission of a copyrighted movie from a DVD drive to a video display over such an interface. Another limitation is the inability to protect the confidentiality of sensitive information, since such information would not be protected from unauthorized viewing. A conventional IEEE 1394 interface is also susceptible to "hacking", since any node may be capable of controlling other nodes through appropriate commands. Thus, for example, it would be extremely risky to couple a modem, a disk drive and a computer CPU together on a conventional IEEE 1394-based interface, since a possibility would exist that an unauthorized entity gaining access to the interface through the modem would have full access to the computer as well as to all of the data on the disk drive.
It is believed that the ability to secure transmissions over a memory-mapped communications interface such as defined by the IEEE 1394 specification would lead to greater acceptance of the specification in many new and important applications. Equally important to widespread acceptance of such interfaces, however, is adherence to a well-defined and accepted standard, and any attempt to deviate from such a standard would likely lead to incompatibility with other devices compatible with the standard.
Moreover, another concern that may need to be addressed in some applications is that of implementing support for secure transmissions with minimum additional cost and effort over conventional designs. Specifically, a great deal of development effort has and continues to be expended in developing hardware components for use in supporting conventional IEEE 1394 interfaces. To the extent that such components could be used in a secure environment would decrease the additional effort associated with implementing secure transmissions over such an interface.
Therefore, a significant need has arisen for a manner of securing data communication over a memory-mapped communications interface in a manner that retains compatibility with an existing standard, and that does not require significant additional expenditure and effort. Among other interfaces, a specific need exists for a manner of supporting secure data transmission between devices over an IEEE 1394-based interface while retaining compatibility with legacy IEEE 1394-compatible devices coupled to such an interface.